package com.wgy.day30.递归;
/*
  递归练习四:
        递归打印多级目录
       要求:遍历D:\\小云\\abc文件夹,及文件夹的子文件夹
       只要.java结尾的文件

       D:\\小云\\abc
       D:\\小云\\abc.txt
       D:\\小云\\abc.java
       D:\\小云\\abc\\a
       D:\\小云\\abc\\a\\a.java
       D:\\小云\\abc\\a\\a.jpg
       D:\\小云\\abc\\b
       D:\\小云\\abc\\b\\b.java
       D:\\小云\\abc\\a\\b.txt

 */

import java.io.File;

public class Demo05Recursion {
    public static void main(String[] args) {
        File f1 = new File("D:\\小云\\abc");

        getAllFile(f1);

    }

    public static void getAllFile(File dir) {
        System.out.println(dir);

        File[] list = dir.listFiles();
        //对遍历得到的File对象f进行判断,判断是否是文件夹
        for (File f : list) {
            //如果是文件夹,就继续遍历这个文件夹
            //getAllFile()方法参数传递的就是文件夹,是遍历文件夹的方法
            //所以直接调用getAllFile方法即可:递归(自己调用自己)
            if (f.isDirectory()) {
                getAllFile(f);
            } else {
                /*
                //不是文件夹,那就是文件,再对文件进行.java判断是就打印
                //1.把File对象f转化为字符串对象
                // String s = f.getPath();
                // String s = f.toString();
                String s = f.getName();

                //2.把字符串转化为小写格式
                String s1 = s.toLowerCase();

                //3.对字符串的结尾进行判断
                boolean b = s1.endsWith(".java");

                if (b) {
                    System.out.println(f);
                }
                */

                //直接使用链式编程
                if(f.getName().toLowerCase().endsWith(".java")){
                    System.out.println(f);
                }


            }
        }
    }
}
